home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / alsa / conf.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  8KB  |  199 lines

  1. /**
  2.  * \file include/conf.h
  3.  * \brief Application interface library for the ALSA driver
  4.  * \author Jaroslav Kysela <perex@suse.cz>
  5.  * \author Abramo Bagnara <abramo@alsa-project.org>
  6.  * \author Takashi Iwai <tiwai@suse.de>
  7.  * \date 1998-2001
  8.  *
  9.  * Application interface library for the ALSA driver
  10.  */
  11. /*
  12.  *   This library is free software; you can redistribute it and/or modify
  13.  *   it under the terms of the GNU Lesser General Public License as
  14.  *   published by the Free Software Foundation; either version 2.1 of
  15.  *   the License, or (at your option) any later version.
  16.  *
  17.  *   This program is distributed in the hope that it will be useful,
  18.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  *   GNU Lesser General Public License for more details.
  21.  *
  22.  *   You should have received a copy of the GNU Lesser General Public
  23.  *   License along with this library; if not, write to the Free Software
  24.  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  25.  *
  26.  */
  27.  
  28. #ifndef __ALSA_CONF_H
  29. #define __ALSA_CONF_H
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. /**
  36.  *  \defgroup Config Configuration Interface
  37.  *  The configuration functions and types allow you to read, enumerate,
  38.  *  modify and write the contents of ALSA configuration files.
  39.  *  \{
  40.  */
  41.  
  42. /** \brief \c dlsym version for the config evaluate callback. */
  43. #define SND_CONFIG_DLSYM_VERSION_EVALUATE    _dlsym_config_evaluate_001
  44. /** \brief \c dlsym version for the config hook callback. */
  45. #define SND_CONFIG_DLSYM_VERSION_HOOK        _dlsym_config_hook_001
  46.  
  47. /** Configuration node type. */
  48. typedef enum _snd_config_type {
  49.     /** Integer number. */
  50.         SND_CONFIG_TYPE_INTEGER,
  51.     /** 64 bit Integer number. */
  52.         SND_CONFIG_TYPE_INTEGER64,
  53.     /** Real number. */
  54.         SND_CONFIG_TYPE_REAL,
  55.     /** Character string. */
  56.         SND_CONFIG_TYPE_STRING,
  57.         /** Pointer (runtime only, cannot be saved). */
  58.         SND_CONFIG_TYPE_POINTER,
  59.     /** Compound node. */
  60.     SND_CONFIG_TYPE_COMPOUND = 1024
  61. } snd_config_type_t;
  62.  
  63. /**
  64.  * \brief Internal structure for a configuration node object.
  65.  *
  66.  * The ALSA library uses a pointer to this structure as a handle to a
  67.  * configuration node. Applications don't access its contents directly.
  68.  */
  69. typedef struct _snd_config snd_config_t;
  70. /**
  71.  * \brief Type for a configuration compound iterator.
  72.  *
  73.  * The ALSA library uses this pointer type as a handle to a configuration
  74.  * compound iterator. Applications don't directly access the contents of
  75.  * the structure pointed to by this type.
  76.  */
  77. typedef struct _snd_config_iterator *snd_config_iterator_t;
  78. /**
  79.  * \brief Internal structure for a configuration private update object.
  80.  *
  81.  * The ALSA library uses this structure to save private update information.
  82.  */
  83. typedef struct _snd_config_update snd_config_update_t;
  84.  
  85. extern snd_config_t *snd_config;
  86.  
  87. int snd_config_top(snd_config_t **config);
  88.  
  89. int snd_config_load(snd_config_t *config, snd_input_t *in);
  90. int snd_config_load_override(snd_config_t *config, snd_input_t *in);
  91. int snd_config_save(snd_config_t *config, snd_output_t *out);
  92. int snd_config_update(void);
  93. int snd_config_update_r(snd_config_t **top, snd_config_update_t **update, const char *path);
  94. int snd_config_update_free(snd_config_update_t *update);
  95. int snd_config_update_free_global(void);
  96.  
  97. int snd_config_search(snd_config_t *config, const char *key,
  98.               snd_config_t **result);
  99. int snd_config_searchv(snd_config_t *config, 
  100.                snd_config_t **result, ...);
  101. int snd_config_search_definition(snd_config_t *config,
  102.                  const char *base, const char *key,
  103.                  snd_config_t **result);
  104.  
  105. int snd_config_expand(snd_config_t *config, snd_config_t *root,
  106.               const char *args, snd_config_t *private_data,
  107.               snd_config_t **result);
  108. int snd_config_evaluate(snd_config_t *config, snd_config_t *root,
  109.             snd_config_t *private_data, snd_config_t **result);
  110.  
  111. int snd_config_add(snd_config_t *config, snd_config_t *leaf);
  112. int snd_config_delete(snd_config_t *config);
  113. int snd_config_delete_compound_members(const snd_config_t *config);
  114. int snd_config_copy(snd_config_t **dst, snd_config_t *src);
  115.  
  116. int snd_config_make(snd_config_t **config, const char *key,
  117.             snd_config_type_t type);
  118. int snd_config_make_integer(snd_config_t **config, const char *key);
  119. int snd_config_make_integer64(snd_config_t **config, const char *key);
  120. int snd_config_make_real(snd_config_t **config, const char *key);
  121. int snd_config_make_string(snd_config_t **config, const char *key);
  122. int snd_config_make_pointer(snd_config_t **config, const char *key);
  123. int snd_config_make_compound(snd_config_t **config, const char *key, int join);
  124.  
  125. int snd_config_imake_integer(snd_config_t **config, const char *key, const long value);
  126. int snd_config_imake_integer64(snd_config_t **config, const char *key, const long long value);
  127. int snd_config_imake_real(snd_config_t **config, const char *key, const double value);
  128. int snd_config_imake_string(snd_config_t **config, const char *key, const char *ascii);
  129. int snd_config_imake_pointer(snd_config_t **config, const char *key, const void *ptr);
  130.  
  131. snd_config_type_t snd_config_get_type(const snd_config_t *config);
  132.  
  133. int snd_config_set_id(snd_config_t *config, const char *id);
  134. int snd_config_set_integer(snd_config_t *config, long value);
  135. int snd_config_set_integer64(snd_config_t *config, long long value);
  136. int snd_config_set_real(snd_config_t *config, double value);
  137. int snd_config_set_string(snd_config_t *config, const char *value);
  138. int snd_config_set_ascii(snd_config_t *config, const char *ascii);
  139. int snd_config_set_pointer(snd_config_t *config, const void *ptr);
  140. int snd_config_get_id(const snd_config_t *config, const char **value);
  141. int snd_config_get_integer(const snd_config_t *config, long *value);
  142. int snd_config_get_integer64(const snd_config_t *config, long long *value);
  143. int snd_config_get_real(const snd_config_t *config, double *value);
  144. int snd_config_get_ireal(const snd_config_t *config, double *value);
  145. int snd_config_get_string(const snd_config_t *config, const char **value);
  146. int snd_config_get_ascii(const snd_config_t *config, char **value);
  147. int snd_config_get_pointer(const snd_config_t *config, const void **value);
  148. int snd_config_test_id(const snd_config_t *config, const char *id);
  149.  
  150. snd_config_iterator_t snd_config_iterator_first(const snd_config_t *node);
  151. snd_config_iterator_t snd_config_iterator_next(const snd_config_iterator_t iterator);
  152. snd_config_iterator_t snd_config_iterator_end(const snd_config_t *node);
  153. snd_config_t *snd_config_iterator_entry(const snd_config_iterator_t iterator);
  154.  
  155. /**
  156.  * \brief Helper macro to iterate over the children of a compound node.
  157.  * \param pos Iterator variable for the current node.
  158.  * \param next Iterator variable for the next node.
  159.  * \param node Handle to the compound configuration node to iterate over.
  160.  *
  161.  * This macro is designed to permit the removal of the current node.
  162.  */
  163. #define snd_config_for_each(pos, next, node) \
  164.     for (pos = snd_config_iterator_first(node), next = snd_config_iterator_next(pos); pos != snd_config_iterator_end(node); pos = next, next = snd_config_iterator_next(pos))
  165.  
  166. /* Misc functions */
  167.  
  168. int snd_config_get_bool_ascii(const char *ascii);
  169. int snd_config_get_bool(const snd_config_t *conf);
  170. int snd_config_get_ctl_iface_ascii(const char *ascii);
  171. int snd_config_get_ctl_iface(const snd_config_t *conf);
  172.  
  173. /* Names functions */
  174.  
  175. /**
  176.  * Device-name list element
  177.  */
  178. typedef struct snd_devname snd_devname_t;
  179.  
  180. /**
  181.  * Device-name list element (definition)
  182.  */
  183. struct snd_devname {
  184.     char *name;    /**< Device name string */
  185.     char *comment;    /**< Comments */
  186.     snd_devname_t *next;    /**< Next pointer */
  187. };
  188.  
  189. int snd_names_list(const char *iface, snd_devname_t **list);
  190. void snd_names_list_free(snd_devname_t *list);
  191.  
  192. /** \} */
  193.  
  194. #ifdef __cplusplus
  195. }
  196. #endif
  197.  
  198. #endif /* __ALSA_CONF_H */
  199.